package com.atguigu.gulimail.order.listener;

import com.atguigu.gulimail.order.pay.vo.PayAsyncVo;
import com.atguigu.gulimail.order.service.OrderService;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;

import javax.servlet.http.HttpServletRequest;

@RestController
public class OrderPayedListener {

    @Autowired
    OrderService orderService;

    /**
     * 支付宝支付成功异步回调
     *  使用内网穿透地址: 动态  映射到 Nginx localhost:80；由于内网穿透的请求没有携带Hsot信息，不会转给订单服务，所以需要在Nginx配置
     *  支付成功，支付宝会 使用最大努力机制 24小时内发送8次请求，并携带支付信息 向服务器通知；
     *  只有当服务器向支付宝返回 “success” 支付宝停止通知请求
     * @param request
     * @return
     */
    @PostMapping("payed/notify")
    public String handleAlipayed(PayAsyncVo payAsyncVo, HttpServletRequest request){
        System.out.println("支付宝通知已收到---");

        //验签，防止虚假信息

        String res=orderService.handlePayResult(payAsyncVo);

        return res;
    }

}
